package com.gomoku.app;

import javafx.application.Application;
import javafx.application.Platform; // 添加缺失的导入
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType; // 添加Alert类型导入
import javafx.stage.Stage;
import com.gomoku.controller.SceneManager;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            // 基础配置
            primaryStage.setTitle("五子棋");
            primaryStage.setMinWidth(800);
            primaryStage.setMinHeight(600);

            // 初始化场景管理器
            SceneManager.setPrimaryStage(primaryStage);

            // 预加载资源检查
            checkResources();

            // 加载启动界面
            SceneManager.loadScene("StartView");

            // 窗口关闭事件处理
            primaryStage.setOnCloseRequest(event -> {
                System.out.println("应用程序安全退出");
                Platform.exit();
                System.exit(0);
            });

        } catch (Exception e) {
            System.err.println("应用程序启动失败: " + e.getMessage());
            showErrorAlert("致命错误", "应用程序初始化失败: " + e.getMessage());
            Platform.exit();
        }
    }

    private void checkResources() {
        String[] requiredResources = {
                "/com/gomoku/view/StartView.fxml",
                "/com/gomoku/view/GameView.fxml",
                "/com/gomoku/images/background.png",
                "/com/gomoku/images/gear.jpg"
        };

        for (String res : requiredResources) {
            if (getClass().getResource(res) == null) {
                throw new RuntimeException("关键资源缺失: " + res);
            }
        }
    }

    private void showErrorAlert(String title, String message) {
        Platform.runLater(() -> {
            Alert alert = new Alert(AlertType.ERROR);
            alert.setTitle(title);
            alert.setHeaderText(null);
            alert.setContentText(message);
            alert.showAndWait();
        });
    }

    public static void main(String[] args) {
        launch(args);
    }
}